package com.github.zj.dreamly.java8.concurrent;

import java.util.concurrent.TimeUnit;

/**
 * @author Benjamin Winterberg
 */
public class Threads1 {

	public static void main(String[] args) {
		test1();
//        test2();
//        test3();
	}

	private static void test3() {
		Runnable runnable = () -> {
			try {
				System.out.println("Foo " + Thread.currentThread().getName());
				TimeUnit.SECONDS.sleep(1);
				System.out.println("Bar " + Thread.currentThread().getName());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		};

		Thread thread = new Thread(runnable);
		thread.start();
	}

	private static void test2() {
		Runnable runnable = () -> {
			try {
				System.out.println("Foo " + Thread.currentThread().getName());
				Thread.sleep(1000);
				System.out.println("Bar " + Thread.currentThread().getName());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		};

		Thread thread = new Thread(runnable);
		thread.start();
	}

	private static void test1() {
		Runnable runnable = () -> {
			String threadName = Thread.currentThread().getName();
			System.out.println("Hello " + threadName);
		};

		runnable.run();

		Thread thread = new Thread(runnable);
		thread.start();

		System.out.println("Done!");
	}
}
